package com.xiangxiao.rpan.authority.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xiangxiao.rpan.authority.model.UserRoleInfo;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author xiangxiao
 * email: 573768011@qq.com
 * date: 2022/11/4 10:29
 */
@Data
public class UserVo implements Serializable {

  private static final long serialVersionUID = 4709427490091225547L;
  /**
   * 用户id
   */
  private Long id;

  /**
   * 姓名
   */
  private String name;

  /**
   * 账户
   */
  private String account;

  /**
   * 密码
   */
  private String password;

  /**
   * 用户头像
   */
  private String imageUrl;

  /**
   * 创建时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private Date createTime;

  /**
   * 有效时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private Date startTime;

  /**
   * 失效时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private Date endTime;

  /**
   * 角色名
   */
  private List<UserRoleInfo> roleList;

  /**
   * 联系方式
   */
  private String phone;

  /**
   * 邮箱地址
   */
  private String email;

  /**
   * 备注
   */
  private String remark;

  /**
   * 创建者
   */
  private String creator;

  /**
   * 创建者id
   */
  private String createId;

  /**
   * 用户类型
   */
  private Integer type;

  /**
   * 用户状态不启用;1启用
   */
  private Integer status;

  /**
   * 是否已经过期失效(0未过期; 1已过期)
   */
  private Integer expired;

  /**
   * 用户登录次数
   */
  private Long loginTimes;

  /**
   * 删除状态: 0未删除;1已删除
   */
  private Integer deletedFlg;

  /**
   * 用户组织类型
   */
  private String orgType;

  /**
   * 创建者类型
   */
  private String creatorType;

  /**
   * 用户等级0普通管理员; 1超级管理员；2 普通管理员
   */
  private Integer level;

  /**
   * 初始密码
   */
  private String initialPassword;
  /**
   * 用户修改时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private Date updateTime;

  /**
   * 密码修改时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private Date passwordUpdateTime;

  /**
   * 密码使用天数
   */
  private int passwordUseDay;


  // /**
  // * 数据权限
  // */
  // List<DataAuthority> dataRuleList;

  /**
   * 用户关联的摄像头ids
   */
  private List<Long> sourceIds;

  private List<Long> appFuncIds;
}
